package socket.server;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

/**
 * socket 服务连接，
 * 1.单个的scoket 通信
 * 2.socket 一直启动服务，一直接收请求处理
 * 3.socket 服务端 多线程处理socket请求，有请求时，新建线程处理请求
 * 4.socket 服务端使用 socket连接池 处理socket请求，从连接池 取连接 处理请求
 * 
 * 
 * @auth hucc
 * @date 2015年10月10日
 */
public class WeatherServer4 {

    private static final int PORT = 8888;

    public static void main(String[] args) throws IOException {

        ServerSocket server = null;
        Socket socket = null;
        server = new ServerSocket(PORT);
        System.out.println("天气服务端已经移动，监听端口：" + PORT);
        
        //FixedThreadPool最多开启3（参数）个线程，多余的线程会存储在队列中，等线程处理完了
        //再从队列中获取线程继续处理
        Executor executor = Executors.newFixedThreadPool(3);
        while(true){
                socket = server.accept();
                executor.execute(new WeatherThread(socket));
        }
    }
}